﻿namespace StockSharp.Algo.Indicators.Misc
{
	using StockSharp.Algo.Candles;

	/// <summary>
	/// Медианная цена.
	/// </summary>
	public class MedianPrice : BaseIndicator<decimal>
	{
		/// <summary>
		/// Создать <see cref="MedianPrice"/>.
		/// </summary>
		public MedianPrice()
			: base(typeof(Candle))
		{
		}

		/// <summary>
		/// Сформирован ли индикатор.
		/// </summary>
		public override bool IsFormed
		{
			get { return true; }
		}

		/// <summary>
		/// Обработать входное значение.
		/// </summary>
		/// <param name="input">Входное значение.</param>
		/// <returns>Результирующее значение.</returns>
		protected override decimal OnProcess(IIndicatorValue input)
		{
			var candle = input.GetValue<Candle>();
			return (candle.HighPrice + candle.LowPrice) / 2;
		}
	}
}